{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import os\n",
    "from sklearn.metrics import confusion_matrix\n",
    "from sklearn.metrics import precision_recall_fscore_support as score\n",
    "from sklearn.metrics import accuracy_score\n",
    "import matplotlib.pyplot as plt\n",
    "import seaborn as sns\n",
    "import numpy as np\n",
    "import pandas as pd\n",
    "from modules.predict_utils import *"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "def get_cm(folder): \n",
    "    csv_path = f'./result/{folder}/confusion_matrix.csv'\n",
    "    df = pd.read_csv(csv_path, index_col=0)\n",
    "\n",
    "    # Plotting the confusion matrix\n",
    "    plt.figure(figsize=(11, 9.5))\n",
    "    confusion_matrix = sns.heatmap(df, annot=True, fmt='d', cmap='Blues', cbar=True)\n",
    "    plt.title('Confusion Matrix')\n",
    "    plt.ylabel('True Label')\n",
    "    plt.xlabel('Predicted Label')\n",
    "    plt.xticks(rotation=0)\n",
    "    plt.yticks(rotation=0)\n",
    "\n",
    "    plt.tight_layout(pad=3.0)\n",
    "    # 调整标签字体大小\n",
    "    plt.yticks(fontsize=8.0)  \n",
    "    plt.xticks(fontsize=8.0)\n",
    "\n",
    "    plt.savefig(f'./result/{folder}/confusion_matrix.png',dpi=300)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "result_root = 'result_large_model'\n",
    "result_folder = 'maxvit'"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [],
   "source": [
    "evaluator = ModelEvaluator(\n",
    "    dataset_name='8_class_select',\n",
    "    result_folder=result_folder,\n",
    "    loader_type='test',\n",
    "    batch_size=512,\n",
    "    gpu_num=4,\n",
    "    weight= 'loss'\n",
    ")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/home/wangcheng/anaconda3/envs/sd/lib/python3.10/site-packages/torch/functional.py:507: UserWarning: torch.meshgrid: in an upcoming release, it will be required to pass the indexing argument. (Triggered internally at ../aten/src/ATen/native/TensorShape.cpp:3549.)\n",
      "  return _VF.meshgrid(tensors, **kwargs)  # type: ignore[attr-defined]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Loading model from best_loss.pth\n",
      "model loaded\n"
     ]
    }
   ],
   "source": [
    "net = evaluator.load_model()\n",
    "if net != None:\n",
    "    print('model loaded')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Loading model from best_loss.pth\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "100%|██████████| 5/5 [00:08<00:00,  1.73s/it]\n"
     ]
    }
   ],
   "source": [
    "true_labels, predicted_labels,top3_predicted_labels, class_num, class_to_idx= evaluator.evaluate()\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Top-1 Accuracy: 0.8342425514057911\n",
      "Top-3 Accuracy: 0.9723038187159043\n"
     ]
    }
   ],
   "source": [
    "\n",
    "# 计算 Top-1 精确率\n",
    "top1_accuracy = accuracy_score(true_labels, predicted_labels)\n",
    "print(\"Top-1 Accuracy:\", top1_accuracy)\n",
    "\n",
    "# 计算 Top-3 精确率\n",
    "# 需要将 top3_predicted_labels 转换为每个样本的 top-3 列表\n",
    "top3_lists = np.array(top3_predicted_labels).reshape(-1, 3)\n",
    "top3_accuracy = top_k_accuracy(true_labels, top3_lists, 3)\n",
    "print(\"Top-3 Accuracy:\", top3_accuracy)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 1100x1100 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "save_cm(result_root,true_labels, predicted_labels, class_num, class_to_idx, result_folder)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "           Metric  Macro Average Micro Average\n",
      "0       Precision       0.832018      0.834243\n",
      "1          Recall       0.816261      0.834243\n",
      "2        F1 Score       0.822555      0.834243\n",
      "3  Top-1 Accuracy       0.834243              \n",
      "4  Top-3 Accuracy       0.972304              \n",
      "\n",
      "             Label  Precision    Recall  F1 Score\n",
      "0    barred-spiral   0.829268  0.641509  0.723404\n",
      "1     cigar-shaped   0.854286  0.859195  0.856734\n",
      "2          edge-on   0.851312  0.829545  0.840288\n",
      "3       elliptical   0.796296  0.824658  0.810229\n",
      "4            error   0.819277  0.834356  0.826748\n",
      "5           merger   0.782051  0.787097  0.784566\n",
      "6            round   0.873656  0.876011  0.874832\n",
      "7  unbarred-spiral   0.850000  0.877717  0.863636\n"
     ]
    },
    {
     "ename": "",
     "evalue": "",
     "output_type": "error",
     "traceback": [
      "\u001b[1;31mThe Kernel crashed while executing code in the current cell or a previous cell. \n",
      "\u001b[1;31mPlease review the code in the cell(s) to identify a possible cause of the failure. \n",
      "\u001b[1;31mClick <a href='https://aka.ms/vscodeJupyterKernelCrash'>here</a> for more info. \n",
      "\u001b[1;31mView Jupyter <a href='command:jupyter.viewOutput'>log</a> for further details."
     ]
    }
   ],
   "source": [
    "df,per_df= performance(\n",
    "    result_root,\n",
    "    result_folder,\n",
    "    true_labels, \n",
    "    predicted_labels,\n",
    "    class_num,\n",
    "    class_to_idx,\n",
    "    top1_accuracy,\n",
    "    top3_accuracy)\n",
    "print(f'{df}\\n')\n",
    "print(per_df)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "show_acc_loss(result_folder,100)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "import pickle"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "def load_pickle(file_path):\n",
    "    with open(file_path, 'rb') as f:\n",
    "        return pickle.load(f)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "folder = 'resnet18'"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "val_acc = load_pickle(f'./result/{folder}/acc_loss/val_acc_list_epoch_100.pkl')\n",
    "val_acc = [x*100 for x in val_acc]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "val_acc"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "cm = confusion_matrix(true_labels, predicted_labels, labels=range(class_num))\n",
    "fig, ax = plt.subplots(figsize=(11,11))\n",
    "sns.heatmap(cm, annot=True, fmt='d', cmap='Blues', \n",
    "            xticklabels=[k for k, _ in class_to_idx.items()], \n",
    "            yticklabels=[k for k, _ in class_to_idx.items()], ax=ax)\n",
    "ax.set_xlabel('Predicted Labels',labelpad=15)\n",
    "ax.set_ylabel('True Labels',labelpad=10)\n",
    "ax.set_title(f'{result_folder}')\n",
    "\n",
    "plt.xticks(rotation=0)\n",
    "plt.yticks(rotation=0)\n",
    "\n",
    "plt.tight_layout(pad=3.0)\n",
    " # 调整标签字体大小\n",
    "plt.yticks(fontsize=8.5)  \n",
    "plt.xticks(fontsize=8.5)\n",
    "# plt.subplots_adjust(bottom=0.2, top=0.9, left=0.2, right=0.8)\n",
    "\n",
    "plt.savefig(f'result/{result_folder}/confusion_matrix.png',dpi=320)\n",
    "plt.show()\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "train_loss = load_pickle(f'result/{folder}/acc_loss/train_loss_list_epoch_100.pkl')\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 画出损失和准确率图\n",
    "plt.figure(figsize=(12, 6))\n",
    "plt.plot(train_loss, label='Training Loss')\n",
    "plt.plot(val_acc, label='Validation Accuracy')\n",
    "plt.title('ResNet18')\n",
    "plt.xlabel('Epochs')\n",
    "plt.ylabel('Value')\n",
    "plt.legend()\n",
    "plt.grid(True)\n",
    "plt.savefig(f'result/{result_folder}/acc_loss.png')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "\n",
    "# 使用pickle.dump函数将val_acc保存为pkl文件\n",
    "with open(f'./result/{folder}/acc_loss/val_acc_list_epoch_100.pkl', 'wb') as f:\n",
    "    pickle.dump(val_acc, f)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "yolov5",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.10.6"
  },
  "orig_nbformat": 4
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
